ASP.Net MVC অ্যাপ্লিকেশনগুলিতে ELMAH (Error Logging Modules and Handlers) এবং NLog দুটি শক্তিশালী টুল, যা Exception এবং Error Logging পরিচালনা করতে ব্যবহৃত হয়। ELMAH সাধারণত Exception লগ করে এবং একটি ওয়েব ভিত্তিক UI-এর মাধ্যমে লগ দেখা যায়। অন্যদিকে, NLog কনফিগারেশনের মাধ্যমে বিভিন্ন ডেস্টিনেশনে (ফাইল, ডাটাবেস, ইমেল ইত্যাদি) লগ পাঠাতে পারে।
ELMAH প্যাকেজ ইনস্টল করুন:
Install-Package elmah
Web.config-এ ELMAH এর সেটিং যোগ করুন:
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
ডিফল্টভাবে ELMAH লগ UI দেখতে এই URL ব্যবহার করুন:
http://localhost/elmah.axd
NLog.Web.AspNetCore প্যাকেজ ইনস্টল করুন:
Install-Package NLog.Web.AspNetCore
NLog.config ফাইল তৈরি করুন এবং এতে নিচের কনফিগারেশন যোগ করুন:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="Logs/logfile.log" layout="${longdate} ${level} ${message} ${exception}" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Error" writeTo="logconsole" />
</rules>
</nlog>
Program.cs-এ NLog কনফিগার করুন:
using NLog.Web;
var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
try
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
// Configure NLog
builder.Logging.ClearProviders();
builder.Logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
builder.Host.UseNLog();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
}
catch (Exception ex)
{
logger.Error(ex, "Application stopped because of an exception.");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
কোনো নির্দিষ্ট ক্লাস বা কন্ট্রোলারে লগিং করতে:
using NLog;
public class HomeController : Controller
{
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
public IActionResult Index()
{
logger.Info("Index page loaded.");
try
{
throw new Exception("Test exception");
}
catch (Exception ex)
{
logger.Error(ex, "An error occurred in the Index action.");
}
return View();
}
}
বৈশিষ্ট্য | ELMAH | NLog |
---|---|---|
ব্যবহারিক ক্ষেত্র | Exception লগ এবং UI ভিত্তিক | Custom লগিং এবং ডেস্টিনেশন নির্ধারণ |
লগ স্টোরেজ | ফাইল, ডাটাবেস | ফাইল, ডাটাবেস, ইমেল, ক্লাউড |
কনফিগারেশন সহজতা | সহজ | কিছুটা জটিল |
UI সাপোর্ট | হ্যাঁ | না |
প্রধান ফোকাস | Exception Management | General Logging |
ELMAH এবং NLog উভয়ই শক্তিশালী লগিং টুল। ELMAH Exception লগ এবং UI-এর জন্য আদর্শ, যেখানে NLog কাস্টমাইজড লগিং এবং মাল্টিপল আউটপুট ডেস্টিনেশনের জন্য ব্যবহৃত হয়। বড় অ্যাপ্লিকেশনে উভয় টুল একসাথে ব্যবহার করে Exception এবং Custom লগিং ব্যবস্থাপনা আরও কার্যকর করা যায়।
common.read_more